#ifndef ISURFACE_H
#define ISURFACE_H

#include "Material.h"
#include "Vector3D.h"
#include "Color.h"
#include "Light3D.h"
#include "Ray3D.h"
#include "HitInfo.h"
#include <vector>

namespace RayTracer
{
    class  ISurface
    {
    public:
	virtual HitInfo Hit(const Ray3D *ray, float min, float max) const = 0;
	virtual Material *GetMaterial() const = 0;
	virtual void SetMaterial(Material *value) = 0;
	virtual Vector3D Normal(const Vector3D *point) const = 0;
	virtual Vector3D GetPosition() const = 0;
	virtual Color GetColor(const Light3D *light, const Vector3D *point) const = 0;
    };
};
#endif
